package 题目集.位运算;

import org.junit.Test;

/**
 * https://leetcode.cn/problems/binary-gap/description/
 * 给定一个正整数 n，找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1，返回 0 。
 */
public class demo01_二进制间距 {

    @Test
    public void test() {
        System.out.println(binaryGap(13));
    }

    public int binaryGap(int n) {
        int res = 0;
        int pre = -1;
        for (int i = 0; n > 0; i++, n = n >> 1) {
            if ((n & 1) == 1) {
                if (pre == -1) {
                    pre = i;
                }
                res =Math.max(res, i - pre);
                pre = i;
            }
        }
        return res;
    }
}
